# Roman to integer
'''
Symbol   Value
I        1
V        5
X        10
L        50
C        100
D        500
M        1000

在罗马数字里，数字通常都是从左到右，从最大往最小去写的，执行加法
III = 1 + 1 + 1 = 3
XI = 10 + 1 = 11
XV = 10 + 5 = 15
DC = 500 + 100
DCXI = 611 

在罗马数字里，一共有 6 种执行减法的规则：
IV = 4
IX = 9

XL = 40
XC = 90

CD = 400
CM = 1000 - 100 = 900





1. I 可以放到 V 的左边 -> 4 或者 X 的左边 -> 9
2. X 可以放到 L 的左边 -> 40 或者 C 的左边 -> 90
3. C 可以放到 D 的左边 -> 400 或者 M 的左边 -> 900

'''

# 给定一个合法的罗马数字字符串，返回它的阿拉伯数字值。
# def roman2integer(rn: str) -> int
# roman2integer("III") -> 3
# roman2integer("LVIII") -> 58
# roman2integer("MCMXCIV")

# "MCMXCIV"
# M CM XC IV
# 1000 + 900 + 90 + 4 = 1994
# MC = 1000 + 100 = 1100
# CM = 1000 - 100 = 900
# MCM
# M + CM: checked 1900

# 定义一个字典，表达罗马数字和阿拉伯数字之间的映射关系
'''
I        1
V        5
X        10
L        50
C        100
D        500
M        1000
IV = 4
IX = 9

XL = 40
XC = 90

CD = 400
CM = 1000 - 100 = 900
'''
r2i = {
    "I" : 1,
    "V" : 5,
    "X" : 10,
    "L" : 50,
    "C" : 100,
    "D" : 500,
    "M" : 1000,
    "IV" : 4,
    "IX" : 9,
    "XL" : 40,
    "XC" : 90,
    "CD" : 400,
    "CM" : 900
}

'''
result = 1994
           v 
M CM XC IV 

'''
def romanToInt(rn: str) -> int:
    pass
